package com.fuhao.redisionlock.controller;

import com.fuhao.redisionlock.config.RedissLockUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;

@RestController
public class LockController {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    String lockKey = "testRedisson";//分布式锁的key

    @Value("${server.port}")
    private String port;

    @RequestMapping("/test1")
    public String test1() throws InterruptedException {
//        Thread.sleep(15000);
       for(int i=0; i < 55; i++){
           RedissLockUtil.lock(lockKey, TimeUnit.MINUTES, 10);
            int stock = Integer.parseInt(stringRedisTemplate.opsForValue().get("aaa").toString());
            if(stock >0){
                stringRedisTemplate.opsForValue().set("aaa",(stock-1)+"");
                System.out.println("test1_:lockkey:"+lockKey+",stock:"+(stock-1)+"");
            }else{
                return "不好意思，商品被抢完了！";
            }
           RedissLockUtil.unlock(lockKey);
 }
        return port;
    }






//    private final String _lock  = "_lock";

//    static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//    public static String getCurrentDate(){
//        return sdf.format(new Date());
//    }

//    @RequestMapping(value = "/testlock",method= RequestMethod.GET)
//    public String testlock(String name) {
//
//        new Thread(new Runnable() {
//
//            @Override
//            public void run() {
//
//                RedissLockUtil.lock(_lock, TimeUnit.MINUTES, 10);
//
//                System.out.println(getCurrentDate()+" "+name+" begin...");
//                for (int i = 0; i < 20; i++) {
//                    try {
//                        Thread.sleep(1000);
//                        System.out.println(getCurrentDate()+" "+name+" "+i);
//                    } catch (InterruptedException e) {
//                        e.printStackTrace();
//                    }
//                }
//                System.out.println(getCurrentDate()+" "+name+" end...");
//
//                RedissLockUtil.unlock(_lock);
//            }
//        }).start();
//
//        return "testlock";
//    }


}
